Computing devices often include a mass storage device, such as a disk drive, flash memory or other type of non-volatile memory used to store data associated with the computing device. The mass storage device provides long-term storage for files, such as word processing documents, e-mails, photos, music and videos. Sometimes, the capacity of a storage device can be allocated between multiple uses. For example, the capacity of a disk drive in a digital video recorder (DVR) can be allocated between storage of user selected recordings and operator selected recordings. In other words, the user is entitled to a certain capacity of the disk drive for storing selected television programs and the system operator is entitled to a remaining capacity of the disk drive to push specific programs (e.g., movies) to the DVR which are stored so that a user may then watch the content on-demand if they desire. In this scenario, the disk drive may be partitioned into two or more virtual storage devices which the DVR can selectively access through different namespaces.
The problem with this scenario is that the competing uses require prior fixed area allocations and there is little flexibility to dynamically allocate space between the two uses. For example, some users may not watch on-demand movies, but may desire to utilize the entire capacity of the disk drive of the DVR for storing their own selected content. Likewise, some users may record very few selected programs, but may be frequent users of the on-demand content. Thus, the users may desire the system operator to make a larger selection of content available on-demand via the DVR. In both scenarios, the storage capacity of the disk drive of the DVR is underutilized and users would benefit from a flexible allocation of the storage capacity depending on their desired usage pattern.